Bind answer feedback to generated responses#631
Conversation
Issue short-lived server-signed tokens for non-demo answers and require a matching interaction ID and answer hash before feedback is stored. Verified with the PR-local gate and focused feedback/access tests.
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (9)
📝 WalkthroughWalkthroughAnswer responses now include signed feedback metadata when configured. The feedback endpoint requires and verifies the token before inserting feedback. Token generation, expiration, tamper detection, missing-secret behavior, response propagation, client submission, and route validation are covered by tests. ChangesAnswer feedback token security
Estimated code review effort: 3 (Moderate) | ~25 minutes Sequence Diagram(s)sequenceDiagram
participant Client
participant AnswerAPI
participant TokenModule
participant FeedbackAPI
participant Database
Client->>AnswerAPI: Request answer
AnswerAPI->>TokenModule: Create feedback metadata
TokenModule-->>AnswerAPI: interactionId and feedbackToken
AnswerAPI-->>Client: Answer response
Client->>FeedbackAPI: Submit feedback and token
FeedbackAPI->>TokenModule: Verify token
TokenModule-->>FeedbackAPI: Verification result
FeedbackAPI->>Database: Insert verified feedback
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Summary
Why
PR #611 recovered privacy-minimised answer feedback but accepted arbitrary UUID interaction IDs. This follow-up implements the deferred recommendation without adding a live schema migration or persisting answer text.
Areas touched
Verification
npm run verify:pr-local -- --files src/lib/answer-feedback-token.ts,src/app/api/answer-feedback/route.ts,src/app/api/answer/route.ts,src/app/api/answer/stream/route.ts,src/components/ClinicalDashboard.tsx,src/lib/types.ts,tests/answer-feedback-route.test.ts,tests/answer-feedback-token.test.ts,tests/private-access-routes.test.ts— passednpm test -- tests/answer-feedback-token.test.ts tests/answer-feedback-route.test.ts tests/private-access-routes.test.ts— 118 passed after refreshing frommainnpm run check:production-readinesswith OpenAI/Supabase credentials removed — local runtime and query-secret guards passed; expected live-configuration checks failed because provider credentials were deliberately unavailablenpm run ensure && npm run verify:ui— timed out after 15 minutes without a final Playwright result; all task-owned server/browser processes were stoppedProduction readiness / governance
Risk / limitations
Summary by CodeRabbit
New Features
Bug Fixes